package com.credithc.signature.manager;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfDictionary;
import com.itextpdf.text.pdf.PdfName;
import com.itextpdf.text.pdf.PdfNumber;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfSmartCopy;

import java.io.FileOutputStream;

/**
 * @desc: <br/>
 * @author: Jingbo Hu<br/>
 * @time：2020年05⽉25⽇<br/>
 * @version：v1.0.0<br>
 */
public class PageRotation {

    public static void main(String[] args) throws Exception {
        PdfReader reader = new PdfReader("D:\\test2.pdf"); // 读取源文件
        Document document = new Document(); // 建立文档
        /*
            切勿将源文件和输出文件使用一个路径，否则会出现异常：
            Exception in thread "main" java.io.FileNotFoundException: d:\1.pdf
            (请求的操作无法在使用用户映射区域打开的文件上执行。)
        */
        PdfCopy p = new PdfSmartCopy(document, new FileOutputStream("D:\\test3.pdf")); // 生成的目标PDF文件
        document.open();
        int n = reader.getNumberOfPages(); // 获取源文件的页数
        PdfDictionary pd;
        for (int j = 1; j <= n; j++) {
            pd = reader.getPageN(j);
            pd.put(PdfName.ROTATE, new PdfNumber(90)); // 顺时针旋转90°
        }
        for (int page = 0; page < n; ) {
            p.addPage(p.getImportedPage(reader, ++page));
        }
        document.close();
    }
}
